/**
 * @param {number[]} nums
 * @return {number[][]}
 */
 var subsets = function(nums) {
    let res = []
    let path = []
    const backTracking = function(startIndex){
      // 每次以进入函数就把path加入到结果数组中
      // 退出条件 当startindex 大于等于这个nums的长度的时候就退出
      if(startIndex >= nums.length){
        return
      }
      for(let i = startIndex;i < nums.length;i++){
        path.push(nums[i]) // 将当前的元素加入到path中 下一步就加入到结果数组
        backTracking(i+1) // 下一步从i+1开始计算 计入结果数组中
        path.pop() // 上面的到底之后就弹出 进入下一个i的循环
      }
    }
    backTracking(0)
    return res
};